第3节 使用物联网制作人脸解锁
原理图
摄像头-->树莓派: WiFi
Note right of 树莓派: HomeAssistant处理人脸数据匹配
树莓派-->语音合成: 播放识别结果
树莓派-->红外发射器: 发送处理结果
红外发射器-->大门\n电灯\n空调\n电视\n……: 红外信号
硬件清单
- 树莓派
- 安卓手机
- 红外发射器
- 具有红外遥控器的大门/灯/空调/电视/……
硬件准备
摄像头和扬声器
- 在安卓手机上下载安装
IP摄像头
和Kodi
两个app - 将安卓手机连接到教学WiFi,通过路由器查询记录手机的ip地址
- 打开
IP摄像头
app,进行设置后点击最下面的开启服务器
,记录下视频服务的地址和端口 - Kodi是为了通过安卓手机的扬声器远程播放声音
红外发射器
- 安卓手机安装
智慧家
app,对博联RM Pro红外发射器进行初始化设置,连接到教学WiFi,然后通过路由器查询记录ip地址和mac地址
HomeAssistant的启动
1.启动HomeAssistant
sudo docker start home-assistant
启动大概需要1分钟
2.访问HomeAssistant
树莓派ip:8123
,选择API密码登陆,密码welcome
配置HomeAssistant(configuration.yaml)
sudo docker exec -it home-assistant env LANG=C.UTF-8 /bin/bash
vi configuration.yaml
# 按insert键,然后进行输入
# 退出vi编辑器先按esc键,然后输入:wq,回车
# 退出bash环境输入exit,回车
1.基础配置
group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
# 如果希望能够从iOS或macOS中的家庭应用来管理,增加下面这一行。
homekit:
……
……
……
2.Kodi和摄像头配置
……
……
……
# 在host处填入安卓平板的ip地址
media_player:
- platform: kodi
host: 192.168.123.194
# android_ip_webcam:
# - host: 192.168.123.194
# port: 8090
# ffmpeg:
# camera:
# - platform: ffmpeg
# name: Camera
# input: -rtsp_transport tcp -i rtsp://192.168.123.29:8554/live
# camera:
# - platform: rpi_camera
# camera:
# - platform: local_file
# name: camera01
# file_path: /share/motion/lastsnap.jpg
camera:
- platform: mjpeg
mjpeg_url: http://192.168.123.218:8080/?action=stream
# mjpeg_url: http://192.168.123.59:8088/?action=snapshot
3.红外发射配置
……
……
……
# 在host和mac处填入红外发射器的ip和mac地址
switch:
- platform: broadlink
host: 192.168.123.107
mac: '78:0F:77:5A:26:85'
timeout: 15
switches:
door:
friendly_name: "大门"
command_on: 'eAY0AC8PEAAB2xAuLw8QLi8PEC4vDxEuLw8QLi8QEC4vEBEuLw8vDy8QEC4vDxEuLw8RLi8QEC4AAAAA'
command_off: 'eAY0AC8PEAAB2xAuLw8QLi8PEC4vDxEuLw8QLi8QEC4vEBEuLw8vDy8QEC4vDxEuLw8RLi8QEC4AAAAA'
- 访问http://HomeAssistant的ip地址:8123
- 点击左下角的第一个
服务
按钮,然后选择switch.broadlink_learn_command
- 点击
Call Service
,这时博联红外发射器的前端会出现小红点。用遥控器要学习的按键对着小红点按下去,小红点消失
- 点击左下角的第二个
状态
按钮,找到类似下图的内容,将最后的一长串代码复制到配置文件的对应位置即可
4.人脸识别和tts配置
……
……
……
# 正确填写下面的参数
# 百度人脸识别注册:https://cloud.baidu.com/product/face
sensor:
- platform: baidu_face
api_key: "tHjWWiNXlQLFNT2SdrNPWwH3"
secret_key: "LXHQ5kP6GYewzOqFL1umrK4mfljx3W4r"
group_list: "['normal_group']"
camera_entity_id: "camera.mjpeg_camera"
token: "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI0NjBjMjFlM2NiZjY0YTliYTdjZTFjMzVhNDYzY2I2YiIsImlhdCI6MTU3ODU0NjU3OSwiZXhwIjoxODkzOTA2NTc5fQ.rUDysZx983VxFJPj4cq5gynlNa3A7HO5zd8H9FxTHAQ"
# liveness: "NORMAL"
# name: "ren lian shi bie"
# port: 8123
# pic_url: "网络、本地图片地址"
scan_interval: 1
# image_processing:
# - platform: baidu_face_indentify
# app_id: '11478116'
# api_key: 'tHjWWiNXlQLFNT2SdrNPWwH3'
# secret_key: 'LXHQ5kP6GYewzOqFL1umrK4mfljx3W4r'
# snapshot_filepath: '/home/pi/images/'
# resize: 0
# detect_top_num: 3
# ha_url: 'http://192.168.123.201:8123'
# # ha_password: 'welcome'
# scan_interval: 1
# source:
# - entity_id: camera.mjpeg_camera
# name: faceRec
# 百度TTS注册:https://cloud.baidu.com/product/speech/tts
tts:
- platform: baidu
app_id: 9217941
api_key: qW5HLj4Ks6DfsCV2K9If5O80
secret_key: 37riCUCmGj1lfrhaGcyu11wWqCjvZbZR
#person:声音(0:女,1:男,3:特殊声音,4:特殊声音,缺省0)
person: 4
#speed:语速0-9(缺省5)
speed: 5
#pitch:语调0-9(缺省5)
pitch: 5
#volume:音量0-15(缺省5)
volume: 15
5.人脸注册
- 将照片传到HomeAssistant目录下的uploadpics目录下
- 选择注册人脸服务进行注册
依照此格式填写:
{"user_info":"乔碧萝","image":"/config/uploadpics/zhangcuihua.jpg","uid":"tank"}
user_info为用户标识,识别出人脸时候系统会显示这个名称 uid用于查找删除人脸数据 image为上传照片的路径
- 可对注册的人脸进行颜值检测
依照此格式填写:
{"image":"/config/uploadpics/zhangcuihua.jpg"}
检测成功会返回结果
6.自动化配置 automations.yaml
……
……
……
# 当检测到人脸(人脸识别结果大于0),就执行tts和开关操作。
- id: baiduface
alias: face_indentify
trigger:
- entity_id: sensor.ren_lian_shi_bie
platform: state
to: 'True'
action:
- data_template:
entity_id: media_player.kodi
message: >
{% if states.sensor.ren_lian_shi_bie.attributes["user_id"] == "chy01" %}
你好,陈虹宇!
{% elif states.sensor.ren_lian_shi_bie.attributes["user_id"] == "sjc" %}
你好,宿金超!
{% endif %}
service: tts.baidu_say
service: switch.turn_on
data:
- entity_id: switch.door
执行人脸解锁
- 将安卓手机放置在大门边上
- 可以将另一个大的显示器放在边上,全屏实时显示手机拍摄的实时画面
- 当人靠近手机摄像头的时候,如果能够正确识别,则会播放语音问候,并执行红外线开关操作
在这个基础上,可以扩展出各种其他的应用,基本过程就是通过正确的人脸识别,触发其他物联网操作。 比如在教室门口识别到教师后,就自动执行打开投影仪、放下投影幕布,拉上窗帘等一系列上课操作。